package com.example.ttkl;

import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.location.Location;
import android.os.Build;
import android.os.Environment;
import android.webkit.WebView;

import com.example.ttkl.fragment.XYXActivity.PT.DishManager;
import com.example.ttkl.fragment.XYXActivity.PT.StaticValue;
import com.kc.openset.config.OSETSDK;
import com.kc.openset.config.controller.OSETCustomController;
import com.kc.openset.listener.OSETInitListener;
import com.lzy.okhttputils.OkHttpUtils;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class MyApplication extends Application {

    private static Context mContext;

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
            // 安卓9.0后不允许多进程使用同一个数据目录
            try {
                WebView.setDataDirectorySuffix(getProcessName());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        if (mContext == null) mContext = getApplicationContext();
        OkHttpUtils.init(this);
        // setUserId传你们的用户Id，有就传没有就不传，用于根据用户反馈问题，查问题用
        OSETSDK.getInstance()
//                .setUserId("aaa")
                .setCustomController(getOSETCustomController())
                .setCustomController(new OSETCustomController() {
                })
                .init(this, Common.APP_KEY, new OSETInitListener() {
                    @Override
                    public void onError(String s) {
                        //初始化失败
                    }

                    @Override
                    public void onSuccess() {
                        //初始化成功
                    }
                });
        //拼图游戏
        SharedPreferences pref = getSharedPreferences(StaticValue.SP_NAME, MODE_PRIVATE);
        setLevel(pref.getInt(StaticValue.SP_LEVEL, 3));

    }

    //拼图游戏
    private static DishManager dm;

    public static int getLevel() {
        return level;
    }

    public static void setLevel(int level) {
        if (level < 3) return;
        MyApplication.level = level;
        initDishManager();
    }

    public static Context getAppContext() {
        return mContext;
    }

    public static void initDishManager() {
        dm = new DishManager(level);
    }

    public static DishManager getDishManager() {
        return dm;
    }

    private static int level = 3;

    public static File getPinTu() {
        File tupianyuepu = new File(Environment.getExternalStorageDirectory().getPath(), Constants.pintu);
        if (!tupianyuepu.exists()) {
            tupianyuepu.mkdirs();
        }
        File file = new File(tupianyuepu, Constants.nomedia);
        if (!file.exists()) {
            try {
                boolean newFile = file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return tupianyuepu;
    }

    public OSETCustomController getOSETCustomController() {
        OSETCustomController osetCustomController = new OSETCustomController() {

            /**
             * 是否允许SDK主动使用地理位置信息
             *
             * @return true可以获取，false禁止获取。默认为true
             */
            public boolean canReadLocation() {
                return true;
            }

            /**
             * 当canReadLocation=false时，可传入地理位置信息，sdk使用您传入的地理位置信息
             *
             * @return 地理位置参数
             */
            public Location getLocation() {
                return null;
            }

            /**
             * 是否允许SDK主动使用手机硬件参数，如：imei, android_id, meid, imsi, iccid
             *
             * @return true可以使用，false禁止使用。默认为true
             */
            public boolean canUsePhoneState() {
                return true;
            }

            /**
             * 当canUsePhoneState=false时，可传入原始的imei信息，sdk使用您传入的原始imei信息。
             * 注意：请传入原始imei值，无需使用md5加密，sdk整体信息加密传输已满足合规需要
             */
            public String getImei() {
                return "";
            }

            /**
             * 当canUsePhoneState=false时，可传入android_id信息，sdk使用您传入的android_id
             */
            public String getAndroidId() {
                return "";
            }

            /**
             * 是否允许SDK主动使用oaid
             *
             * @return true可以使用，false禁止使用。默认为true
             */
            public boolean canUseOaid() {
                return true;
            }

            /**
             * 当canUseOaid=false时，可传入oaid信息，sdk使用您传入的oaid信息
             * 注意：请传入原始oaid，无需使用md5加密，sdk整体信息加密传输已满足合规需要
             */
            public String getOaid() {
                return "";
            }

            /**
             * 是否允许SDK主动使用mac_address
             *
             * @return true可以使用，false禁止使用。默认为true
             */
            public boolean canUseMacAddress() {
                return true;
            }

            /**
             * 当canUseMacAddress=false时，可传入mac地址信息，sdk使用您传入的mac地址信息
             */
            public String getMacAddress() {
                return "";
            }

            /**
             * 是否允许SDK主动使用ACCESS_NETWORK_STATE权限
             *
             * @return true可以使用，false禁止使用。默认为true
             */
            public boolean canUseNetworkState() {
                return true;
            }

            /**
             * 是否允许SDK主动使用存储权限
             *
             * @return true可以使用，false禁止使用。默认为true
             */
            public boolean canUseStoragePermission() {
                return true;
            }

            /**
             * 是否允许SDK主动读取app安装列表
             *
             * @return true可以使用，false禁止使用。默认为true
             */
            public boolean canReadInstalledPackages() {
                return true;
            }

            /**
             * 当canReadInstalledPackages=false时，可传入package list信息，sdk使用您传入的package list
             */
            public List<String> getInstalledPackages() {
                return null;
            }

            /**
             * 是否启用个性化广告开关，默认为true
             * @return true：开启，false：关闭
             */
            public boolean canUsePersonalizedAd() {
                return true;
            }

        };
        return osetCustomController;
    }
}
